Adjusting Orientation of Content Regions in a Page Layout

ABSTRACT

When a device is rotated from a portrait orientation to landscape orientation, or vice versa, the display device rotates the content items within distinct respective content regions of a page template (“slots”) that each appear to stay in their same position with respect to a frame of reference of the display device. While the content regions stay in their same positions, the content within each content region counter-rotates in place to offset the rotation of the display device. Thus, the content within the content regions maintains an orientation with respect to a constant (non-rotating) frame of reference, regardless of the orientation or rotation of the display device. In one embodiment, a slot&#39;s position, height, and width in a template in a second orientation are determined from the slot&#39;s position, height, and width in the template in a first orientation.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. application Ser.No. 14/504,178, filed Oct. 1, 2014, which is a continuation of U.S.application Ser. No. 13/188,413, filed Jul. 21, 2011 (now U.S. Pat. No.8,872,855), the contents of each is incorporated by reference in itsentirety.

BACKGROUND

This invention relates to automatically adjusting the orientation ofcontent regions within a page layout when a display device is rotatedfrom portrait to landscape view, or vice versa.

The proliferation of handheld computing devices with limited screensizes has lead to a high demand for software applications that candisplayed in either landscape or portrait orientations, depending on auser's viewing preference. Because switching a handheld computingdevice, such as a smartphone or a tablet computer, between landscape andportrait orientations involves simply adjusting how the device is beingheld, the user may choose to switch back and forth between orientationsat will.

Commonly, when a user rotates the display of the computing deviceto/from a portrait orientation from/to a landscape orientation, theentire layout of a displayed page rotates as a whole. FIG. 1Aillustrates an example layout 101 on a display device of content regionsA, B, and C in a portrait orientation. FIG. 1B illustrates the layout101 of the content regions A, B, and C in a landscape orientation,following a 90 degree rotation. In this example, the content regionsstay in their relative positions, with region A across the entire tophalf of the display, and regions B and C on the bottom half, and changetheir position with respect to the device itself. In addition, theaspect ratios of each content region changes to accommodate thedifference in dimensions between portrait and landscape orientations intheir new positions. The layout of the content within a region maychange, for example, by reflowing the text of a region across the widerwidth of the region when the orientation of the page has been changedfrom portrait orientation to landscape orientation. FIGS. 2A and 2B alsoshow a change from a portrait orientation to a landscape orientation by90 degree rotation. Here, too, when the orientation of the page has beenchanged, the full content of a region may no longer fit the page in thenew orientation. Whereas in the portrait orientation shown in FIG. 2A,twelve lines of content were visible in each of regions D and E of thelayout 102, in the landscape orientation shown in FIG. 2B, only eightlines of content are visible in each of regions D and E. The user mayhave to resort to scrolling horizontally or vertically in order to viewthe entire content of the page that was originally formatted for theother orientation.

SUMMARY

In one aspect, a display device is configured to control the layout ofcontent items on the device. When the device is rotated from a portraitorientation to landscape orientation, or vice versa, the display devicerotates the content items within distinct respective content regions ofa page template (“slots”) that each appear to stay in their sameposition with respect to a frame of reference of the display device.While the content regions stay in their same positions, the contentwithin each content region counter-rotates in place to offset therotation of the display device. Thus, the content within the contentregions maintains an orientation with respect to a constant(non-rotating) frame of reference, regardless of the orientation orrotation of the display device.

In one embodiment, a slot's position, height, and width in a template ina second orientation are determined from the slot's position, height,and width in the template in a first orientation. A reference point foreach slot is determined. The reference point for each slot is translatedfrom being in terms of the dimensions of the template in the firstorientation to being in terms of the dimensions of the template in thesecond orientation. The slot height in the first orientation is set tothe slot width in the second orientation, and the slot width in thefirst orientation is set to the slot height in the second orientation.Thus, the slot maintains the same area in the second orientation as inthe first orientation, but the dimensions are reversed. Similarly, theslot's aspect ratio is also merely reversed (e.g., 4:3 becomes 3:4),rather than the being stretched or squeezed into an entirely differentaspect ratio.

In another embodiment, the orientation of content regions of a pagelayout is adjusted between portrait orientation and landscapeorientation, and vice versa. Content is displayed in a plurality ofcontent regions of a page template in a first orientation. Responsive toa rotation of the display of the device from a first orientation to asecond orientation, the content is counter-rotated in each respectivecontent region so that the content remains in a constant orientation(i.e., right side up) with respect to a constant (non-rotating) frame ofreference. The plurality of content regions appears in the samelocations in the second orientation as they were in the firstorientation with respect to a frame of reference of the display of thedevice.

The features and advantages described in this summary and the followingdetailed description are not all-inclusive. Many additional features andadvantages will be apparent to one of ordinary skill in the art in viewof the drawings, specification, and claims hereof.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A illustrates a prior art example layout of three content regionsin portrait orientation. FIG. 1B illustrates a prior art layout of thethree content regions of FIG. 1A in landscape orientation.

FIG. 2A illustrates a prior art example layout of two content regions inportrait orientation. FIG. 2B illustrates a prior art layout of the twocontent regions of FIG. 2A in landscape orientation.

FIG. 3 is a high-level block diagram of a system environment inaccordance with an embodiment of the invention.

FIG. 4A illustrates an example template in a portrait orientation inaccordance with an embodiment of the invention. FIG. 4B illustrates theexample template from FIG. 4A in a landscape orientation.

FIG. 5A illustrates another example template in a portrait orientationin accordance with an embodiment of the invention. FIG. 5B illustratesthe example template from FIG. 5A in a landscape orientation.

FIG. 6 is a flow chart illustrating a method of determining a slotposition, height and width in a template in a second orientation fromthe slot's position, height, and width in the template in a firstorientation.

FIG. 7 is a flow chart illustrating a method of adjusting theorientation of content regions of a page layout, in accordance with anembodiment.

FIG. 8A-D illustrate an example sequence in rotating content regions ina page layout from a portrait orientation to a landscape orientationback to a portrait orientation, in accordance with an embodiment.

FIG. 9A is an example of a page in portrait orientation in accordancewith an embodiment. FIG. 9B illustrates the example of FIG. 9A inlandscape orientation.

FIG. 10A is another example of a page in landscape orientation inaccordance with an embodiment. FIG. 10B illustrates the example of FIG.10A in portrait orientation.

One skilled in the art will readily recognize from the followingdiscussion that alternative embodiments of the structures and methodsillustrated herein may be employed without departing from the principlesof the invention described herein.

DETAILED DESCRIPTION OF THE EMBODIMENTS System Overview

Embodiments of the invention adjust the orientation of content regionsof a page when a display is rotated from portrait orientation tolandscape orientation and vice versa. Template-based page layoutsgenerate aesthetically pleasing layouts that enable a user to browsecontent items through a series of discrete pages, each of which fit intothe available display area of a display device without requiring theuser to scroll. When a user changes the display from portraitorientation to landscape orientation, or vice versa, the content itemsrotate within distinct respective regions of a page (“slots”) that eachappear to stay relatively constant (e.g., same position) with respect toa frame of reference of the display device. FIG. 1 is a high-level blockdiagram of a system environment in accordance with one embodiment. Thesystem environment includes a plurality of sources 111, a contentprocessing system 130, and a client 140 connected via a network 120,such as the Internet.

The sources 111 comprise various sources of content such as text,images, video, or audio on web pages, web feeds, social networks, orother distribution platforms. The content may include user-generatedcontent such as blogs, tweets, shared images, video or audio, and socialnetworking posts and status updates. For convenience, content from asource, regardless of its composition, will be referred to herein as a“content item” or simply “content.”

The content processing system 130 receives content items from thesources 111, processes the content items in order to build pagesaccording to page templates, and serves the pages to a client 140. Thecontent processing system 130 includes a page builder 133, a templatedatabase 137, a rotation instruction module 138, and a page server 139.The content processing system 130 may be implemented using a singlecomputer, or a network of computers, including cloud-based computerimplementations. The computers are preferably server class computersincluding one or more high-performance CPUs and 1G or more of mainmemory, as well as 500 Gb to 2 Tb of computer readable, persistentstorage, and running an operating system such as LINUX or variantsthereof. The operations of these systems as described herein can becontrolled through either hardware or through computer programsinstalled in computer storage and executed by the processors of suchservers to perform the functions described herein. The systems includeother hardware elements necessary for the operations described here,including network interfaces, networking devices (e.g., routers,firewalls) and protocols, input devices for data entry, and outputdevices for display, printing, or other presentations of data, which arenot shown so as to not obscure the relevant details of the system.

The page builder 133 of the content processing system 130 is configuredto build pages that include the content items received from the sources111, and is one means for performing this function. The page builder 133includes a layout module 134 configured to lay out pages according topage templates selected from the template database 137, and is one meansfor performing this function. The templates allow content items from avariety of sources to be laid out on a common page in a manner thatpresents a visually aesthetically appealing design. Templates thatcontribute to a visually appealing design accommodate a variety of sizesof content items, include on the order of three to seven content itemsper page, and are sized appropriately for the display device of theclient 140 to avoid horizontal or vertical scrolling. Examples oftemplates from the template database 137 are described in more detailbelow, with reference to FIGS. 4A-5B.

The rotation instruction module 138 provides instructions for altering apage template based on the orientation of the display, and is one meansfor performing this function. The rotation instruction module 138 mayprovide a mapping between the location of a template slot in portraitorientation and the location where the slot should appear in a landscapeorientation of the page.

The page server 139 is configured to receive the pages completed by thepage builder 133, and serve the completed pages to a client 140 via thenetwork 120, and is one means for performing this function. In oneembodiment, the page server 139 serves the completed pages along withrotation instructions from the rotation instruction module 138 to aclient 140.

The client 140 can be any computing device equipped with an application141 for accessing web content and a display for viewing them, such as apersonal computer, a tablet computer, or a mobile device such as asmartphone. The client 140 receives the formatted page from the pageserver 139 and displays it to the user. The user can select to view thepage in portrait orientation or landscape orientation by physicallyrotating the device from one orientation to another, and freelyalternate between these orientations. The client 140 may follow therotation instructions from the rotation instruction module 138 in orderto display the page in the orientation selected by the user. The client140 may be further equipped with a rotation sensor 144 to sense theorientation of the display of the client 140 so that the page can bedisplayed in the corresponding orientation, and is one means ofperforming this function. While only a single client 140 is shown inFIG. 1, in practice there may be thousands, or even millions of clients140 in communication with the system 130.

Thus, from the viewpoint of a user of the client 140, a variety ofcontent items from a variety of sources 111 are automatically renderedin a page layout on the client 140. The user can rotate the device tochange the display of the page between portrait and landscapeorientations, and the content in the content regions of the page layoutappears to rotate in place while each region appears to stay in the samelocation with respect to a frame of reference of the display device.Accordingly, the user can achieve a magazine-like reading experience ofa variety of content items from a variety of sources without theinconvenience of horizontal or vertical scrolling to see other items onthe page, regardless of the orientation of the display.

Page Templates

A page template describes a spatial arrangement (“layout”) by whichcontent items are arranged for presentation on a display device. Atemplate is comprised of content regions (“slots”), wherein each slotwill hold one content item. Each slot has a length and a width. FIG. 4Aillustrates an example page template 401 in portrait orientation havingthree slots labeled F, G, and H, and FIG. 4B illustrates the sametemplate in landscape orientation. In one embodiment, the area of eachslot is approximately the same in portrait orientation as landscapeorientation, but the dimensions of length and width are exchanged fromone orientation to the other. In other words, for a slot F, the lengthof the slot in portrait orientation, L_(P(F)) shown in FIG. 4A, is thewidth of the slot in landscape orientation shown in FIG. 4B, whereas thewidth of the slot in portrait orientation, W_(P(F)) shown in FIG. 4A, isthe length of the slot in landscape orientation shown in FIG. 4B. Incontrast to the prior art example of FIG. 1A-B, the content regionsshown in FIG. 4A-B stay relatively constant with respect to a frame ofreference 402 of the display device. In both orientations, the contentwithin the content regions F, G, and H appears “right side up” to beeasily readable by the user. In both orientations of the template, thecontent within the content regions F, G, and H are maintained in thesame orientation with respect to a constant (non-rotating) frame ofreference. Thus, it appears to the user that the content has rotatedinside of individual regions that have been held in constant positionswith respect to a frame of reference 402 of the display device.

FIG. 5A illustrates another example page template 501 in portraitorientation. This template has four slots labeled Q, R, S and T. FIG. 5Billustrates the template 501 of FIG. 5A in landscape orientation. Notein this example that the area of each slot remains the same in eachorientation, but the dimensions of length and width are exchanged fromone orientation to the other, as was demonstrated above in FIGS. 4A-Bwith respect to template 401. Also as in the example of FIG. 4A-B, thecontent regions stay in the same position with respect to a frame ofreference 502 of the display device, while the content within thecontent regions counter-rotate in place to offset the rotation of thedisplay device so that they stay in the same orientation with respect toa constant (non-rotating) frame of reference.

The examples shown in FIGS. 4A-5B are examples of the templates that maybe included in the template database 137 of the content processingsystem 130. The templates may be defined, for example, in JSON format.The templates in the template database 137 may share characteristicsthat make each of them appropriate for use in laying out content fordisplay on the client 140 in both portrait orientation and landscapeorientation, such as overall dimensions, and dimensions of slots. Thetemplates may be client-device specific, with different sets oftemplates based on the screen size of the device; thus differenttemplate sets can be provided for various different sizes of tabletcomputers, as well as smartphone or the like. For example, a set oftemplates stored in a template database 137 may be designed for an iPad®tablet computer from Apple Inc., of Cupertino, Calif., to havedimensions such that when content items are displayed according to anyof the templates in the set on the device, the content is presented as asingle readable page, without the need for scrolling. The templatesincluded in a template database 137 that are specific to a differentclient device that has different display characteristics may bedifferent. Generally, templates in the template database 137 arereusable for various content items across various sources 111 forefficiency. For example, the template database 137 may contain on theorder of one hundred templates, which provide a visual variety oflayouts having slots for a variety of different numbers of contentitems.

Rotation of Content Regions in a Page Template

FIG. 6 is a flow chart illustrating a method of determining a slotposition, height and width in a template in a second orientation fromthe slot's position, height, and width in the template in a firstorientation. This method may be implemented, for example, by therotation instruction module 138 of the content processing system 130 torotate a template as displayed on a client 140. Alternatively, therotation instruction module 138 may provide instructions to the client140 that when executed by the client 140 cause the template displayed onthe client 140 in a first orientation to rotate to the secondorientation, or vice versa. The method may be performed using adifferent sequence or combination of steps than illustrated here, andmay be performed concurrently in multiple threads.

In this example, a reference point of a slot in a template and the slotheight and width are determined 601. The reference point of a slot maycorrespond to a corner of the slot, such as the upper left corner, amidpoint of the slot, or any other point in the slot selected forconvenience. The reference point of a slot may be determined withrespect to the frame of reference of the display device while thetemplate is in a first orientation. The slot height and width providethe overall dimensions of the slot, and may also be expressed in termsof the frame of reference of the display device while the template is ina first orientation.

Then, the fractional height of the slot in terms of the template heightand fractional width of the slot in terms of the template width arecalculated 602. Thus, the dimensions of the slot are determined in termsof the template dimensions. Alternatively, the dimensions of the slotcan be determined in terms of number of pixels or other units ofmeasurement.

To determine where the slot belongs in the template in the secondorientation, the reference point position is translated 603 from beingcomputed with respect to a frame of reference of the template in thefirst orientation to being computed with respect to a frame of referenceof the template in the second orientation. This is accomplished, forexample, by exchanging the x and y coordinates of the reference point,and, for templates native to portrait orientation, performing amirroring operation across the vertical axis of the page in order topreserve the apparent position of items on the page.

Lastly, the slot height in the first orientation is set 604 to the slotwidth in the second orientation, and the slot width in the firstorientation is set to the slot height in the second orientation. Thus,in this embodiment, the slot maintains the same area in the secondorientation as in the first orientation, but the dimensions arereversed.

FIG. 7 is a flow chart illustrating a method of adjusting theorientation of content regions of a page layout, in accordance with anembodiment. The method may be performed on a client 140 according toinstructions from the rotation instruction module 138 of the contentprocessing system 130. The method may be performed using a differentsequence or combination of steps than illustrated here, and may beperformed concurrently in multiple threads.

First, the slot positions and slot sizes of a template in each of twoorientations is determined 701. The determination can be made by theclient 140 in response to receiving instructions for display of thetemplate in each of two orientations from the content processing system130. Alternatively, this determination can be accomplished according tothe method illustrated in FIG. 6, executed, for example, by the rotationinstruction module 138.

The client 140 displays 702 content in a template's slots in a firstorientation. The first orientation may be either portrait orientation orlandscape orientation, and may be selected responsive to the orientationsensed by a rotation sensor 144 of the client 140.

Responsive to a rotation of a display of a client device 140 from afirst orientation to a second orientation, the counter-rotation of thecontent to offset the rotation of the display of the client device isanimated 703. From the perspective of the user of the client device 140,as the device changes from portrait orientation to landscapeorientation, each of the content regions appear to stay in the samerelative position with respect to a frame of reference of the clientdevice 140, but the content counter-rotates within each of the contentregions to maintain the same orientation with respect to a constant(non-rotating) frame of reference (outside of the client device 140).Because the height and width of each slot is being exchanged as a resultof rotation, after rotation, the content is laid out within the slot tomatch the slot's new dimensions. For example, images may be repositionedand resized within the slot and text may be reflowed into the slot.Lastly, the content in the template's slots is displayed 704 in thesecond orientation.

For example, if a screen display in a first position is rotated 90degrees in a first direction (clockwise or counterclockwise) in order toswitch the display from a first (portrait or landscape) orientation to asecond (landscape or portrait) orientation, the content iscorrespondingly turned a quarter turn in the opposite direction(counter-clockwise or clockwise) so that the content will appear rightside up in the second orientation. In one embodiment, there are only twoorientations of the template available, and the rotation of the contentis animated to alternate between the two states. Therefore, continuingwith this example, if a screen display is rotated another 90 degrees inthe first direction (clockwise or counter-clockwise) in order to switchthe display back from the second (landscape or portrait) orientation tothe first (portrait or landscape) orientation, the content iscorrespondingly rotated 90 degrees in the opposite direction, but thecontent regions are animated as they move back to their original, firstpositions. Thus, regardless of the starting position, after two 90degree rotations in the same direction, display is physically upsidedown from the starting position, but the content is displayed in thesame orientation and layout as in the starting position.

A specific example of this embodiment is illustrated in FIGS. 8A-D forrotating the display in a counter-clockwise direction. FIG. 8Aillustrates the example template 401 of FIG. 4A, including three contentregions F, G, H. The arrow 881 above the template 401 indicates thedirection of a 90 degree rotation (here, counter-clockwise) of thedisplay to arrive at FIG. 8B. The arrow 882 above each of the contentregion letters F, G, and H indicates the direction of the 90 degreecounter rotation (here clockwise) of the content to arrive at thecontent being right side up in FIG. 8B. FIG. 8C illustrates the samelayout as shown in FIG. 8B. The arrow 883 above the template 401indicates another 90 degree rotation in the counter-clockwise directionneeded to move from FIG. 8C to FIG. 8D, while the arrows 884 above eachof the content region letters F, G, and H in FIG. 8C indicates the 90degree counter-rotation in the clockwise direction needed to arrive atthe content being right side up in FIG. 8D. In this example, to changefrom FIG. 8C to FIG. 8D, the content regions are animated to move backinto their original relative positions shown in FIG. 8A rather thanappearing to rotate in place. By having only two states in which thetemplate exists, no matter how many 90 degree rotations have takenplace, the layout in portrait orientation is consistent, and the layoutin landscape orientation is consistent. Note that the reference axis 402in FIG. 8D shows that the template is now upside down with respect tothe original position in FIG. 8A, but the layout shown in FIG. 8D is thesame as the layout shown in FIG. 8A, with respect to size, shape, andrelative positions of the content regions. If the user had undertaken aquarter turn clockwise from the position shown in FIG. 8C (rather thanthe indicated counter-clockwise rotation), then the content in thecontent regions marked with letters F, G, and H would have all rotated90 degrees counter-clockwise, and they would have appeared to rotate inplace back to the original position shown in FIG. 8A.

FIG. 9A is an example of a page of a social magazine with items from avariety of sources laid out on a common page according to a template inportrait orientation, and FIG. 9B is the example template of FIG. 9Ashown in a landscape orientation. When the user rotates the display aquarter turn in the counter-clockwise direction starting with theportrait orientation, each slot appears to stay in its same positionwith respect to a frame of reference of the display device. The contentwithin each slot counter-rotates to offset the rotation of the displaydevice. Thus, the content within the slots maintains an orientation withrespect to a constant (non-rotating) frame of reference, regardless ofthe orientation or rotation of the display device. FIG. 9B illustratesthe position and orientation of the content items in the content regionsof the template after the quarter turn has been completed.

FIG. 10A is another example of a page of a social magazine with itemsfrom a variety of sources laid out on a common page according to atemplate in a landscape orientation, and FIG. 10B is the example of FIG.10A shown in a portrait orientation. When the user rotates the display aquarter turn in the clockwise direction starting with the landscapeorientation, each slot appears to stay in its same position with respectto a frame of reference of the display device. The content within eachslot counter-rotates to offset the rotation of the display device. Thus,the content within the slots maintains an orientation with respect to aconstant (non-rotating) frame of reference, regardless of theorientation or rotation of the display device. However, in this example,three adjacent short content items 991, 992, 993 are treated forrotation purposes as if they were a single content item belonging to asingle collective slot having dimensions equal to the combined heightand the combined width of the three slots in which content items 991,992, and 993 reside. This approach of treating certain groups of contentitems collectively may be preferred in instances where the exchange ofthe dimensions of an individual slot (for example, a short and wideslot) would lead to awkward slot dimensions (in this example, a tall andnarrow slot) for fitting the content item. By creating a group ofadjacent content items that together approximate closer to a 1:1 aspectratio for the collective slot, the aspect ratio for each individualcontent item can remain closer to the original after the rotation, asdemonstrated for content items 991, 992, and 993 in FIGS. 10A and 10B.

Additional Configuration Considerations

The present invention has been described in particular detail withrespect to several possible embodiments. Those of skill in the art willappreciate that the invention may be practiced in other embodiments.Also, the particular naming of the components, capitalization of terms,the attributes, data structures, or any other programming or structuralaspect is not mandatory or significant, and the mechanisms thatimplement the invention or its features may have different names,formats, or protocols. Further, the system may be implemented via acombination of hardware and software, as described, or entirely inhardware elements. Also, the particular division of functionalitybetween the various system components described herein is merelyexemplary, and not mandatory; functions performed by a single systemcomponent may instead be performed by multiple components, and functionsperformed by multiple components may instead performed by a singlecomponent.

Some portions of above description present the features of the presentinvention in terms of algorithms and symbolic representations ofoperations on information. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. These operations, while describedfunctionally or logically, are understood to be implemented by computerprograms. Furthermore, it has also proven convenient at times, to referto these arrangements of operations as modules or by functional names,without loss of generality.

Unless specifically stated otherwise as apparent from the abovediscussion, it is appreciated that throughout the description,discussions utilizing terms such as “determining” or the like, refer tothe action and processes of a computer system, or similar electroniccomputing device, that manipulates and transforms data represented asphysical (electronic) quantities within the computer system memories orregisters or other such information storage, transmission or displaydevices.

Certain aspects of the present invention include process steps andinstructions described herein in the form of an algorithm. It should benoted that the process steps and instructions of the present inventioncould be embodied in software, firmware or hardware, and when embodiedin software, could be downloaded to reside on and be operated fromdifferent platforms used by real time network operating systems.

The present invention also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program stored on acomputer readable medium that can be accessed by the computer and run bya computer processor. Such a computer program may be stored in atangible computer readable storage medium, such as, but is not limitedto, any type of disk including floppy disks, optical disks, CD-ROMs,magnetic-optical disks, read-only memories (ROMs), random accessmemories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, applicationspecific integrated circuits (ASICs), or any type of media suitable forstoring electronic instructions, and each coupled to a computer systembus. Furthermore, the computers referred to in the specification mayinclude a single processor or may be architectures employing multipleprocessor designs for increased computing capability.

In addition, the present invention is not limited to any particularprogramming language. It is appreciated that a variety of programminglanguages may be used to implement the teachings of the presentinvention as described herein, and any references to specific languagesare provided for enablement and best mode of the present invention.

The present invention is well suited to a wide variety of computernetwork systems over numerous topologies. Within this field, theconfiguration and management of large networks comprise storage devicesand computers that are communicatively coupled to dissimilar computersand storage devices over a network, such as the Internet.

Finally, it should be noted that the language used in the specificationhas been principally selected for readability and instructionalpurposes, and may not have been selected to delineate or circumscribethe inventive subject matter. Accordingly, the disclosure of the presentinvention is intended to be illustrative, but not limiting, of the scopeof the invention.

What is claimed is:
 1. A method for adjusting a layout of a page ofcontent for display on a display of a client device, the methodcomprising: receiving, by the client device, a page template including aplurality of slots, each slot defining a portion of the display of theclient device within which a content item is displayed; displaying acontent item in each of the slots of the page template on the display ofthe client device while the client device is in a first orientation;sensing by a rotation sensor included in the client device, a rotationof the client device to a second orientation, the rotation with respectto a reference orientation; and responsive to the rotation sensorsensing the rotation of the client device: rotating the template and theplurality of slots with respect to the reference orientation to matchthe rotation of the client device so positions of the slots relative toeach other in the second orientation based on the reference point of thedisplay of the client device match positions of the slots relative toeach other in the first orientation based on a reference point of thedisplay of the client device, rotating the content items within each ofthe slots with respect to the display of the client device to maintain aconstant orientation of the content items relative to the referenceorientation, and modifying a layout of the content item presented in therespective slot to fit the content item within its respective slot. 2.The method of claim 1, wherein the first orientation is a portraitorientation and the second orientation is a landscape orientation. 3.The method of claim 1, wherein the rotation of the client device to thesecond orientation is a 90 degree counter-clockwise rotation, and therotation of the content items within each of the slots is a 90 degreeclockwise rotation.
 4. The method of claim 1, wherein the referenceorientation specifies positions of slots in the page template relativeto each other within the display of the client device based on thereference point of the display of the client device.
 5. The method ofclaim 1, further comprising: responsive to the rotation sensor sensing arotation of the client device from the second orientation to a thirdorientation: rotating the template and the plurality of slots withrespect to the reference orientation to match the rotation of the clientdevice so positions of the slots relative to each other in the thirdorientation based on the reference point of the display of the clientdevice match positions of the slots relative to each other in the firstorientation based on the reference point of the display of the clientdevice, rotating the content items within each of the slots with respectto the display of the client device to maintain a constant orientationof the content items relative to the reference orientation, andmodifying a layout of at least one content item in the respective slotto fit the at least one content item within its respective slot.
 6. Themethod of claim 1, wherein the content item comprises an image, andmodifying the layout of the content item presented in the respectiveslot comprises repositioning the image within the slot.
 7. The method ofclaim 1, wherein the content item comprises text, and modifying thelayout of the content item presented in the respective slot comprisesmodifying the text within the slot.
 8. The method of claim 1, furthercomprising: arranging a plurality of content items into a compositecontent item; displaying the composite content item in a slot of thepage template on the display of the client device while the clientdevice is in a first orientation; and responsive to the rotation sensorsensing the rotation of the client device, rotating the compositecontent item within its respective slot with respect to the display ofthe client device to maintain a constant orientation of the compositecontent item relative to the reference orientation.
 9. The method ofclaim 8, wherein the plurality of content items that form the compositecontent item are arranged in adjacent positions on the display of theclient device.
 10. The method of claim 8, wherein the composite contentitem is presented in a single slot having dimensions equal to thecombined height and the combined width of corresponding slots in whichthe plurality of content items reside.
 11. A method for displayingcontent, the method comprising: receiving a page template including aplurality of slots, each slot defining a portion of a display of aclient device within which a content item is displayed; receiving aplurality of content items for display in the page template; assigningeach of the content items to a slot of the page layout; generating afirst layout of the content items, the layout comprising each of thecontent items contained in the slot of the page template to which thecontent item is assigned; displaying the first layout on the display ofthe client device; sensing by a rotation sensor in the client device, arotation of the display of the client device from a first orientation toa second orientation; responsive to the rotation sensor sensing therotation of the display of the client device, generating a second layoutof the content items where positions of the slots of the page templaterelative to each other in the second layout match positions of the slotsrelative to each other in the first layout based on a reference point ofthe display of the client device, where the orientation of the contentitems assigned in each slot in the second orientation match theorientation of the content items in each slot in the first orientation,and where a layout of one or more of the content items are modified tofit within their respective slots based on the rotation of the slotsthat contain the one or more content items; and displaying the secondlayout on the display of the client device while the rotation sensorindicates that the display of the client device is in the secondorientation.
 12. The method of claim 11, wherein the first orientationis a portrait orientation and the second orientation is a landscapeorientation.
 13. The method of claim 11, wherein at least one or more ofthe content items comprises an image, and where the at least one contentitem is modified to fit within its respective slot by repositioning theimage within the respective slot.
 14. The method of claim 11, wherein atleast one or more of the content items comprises text, and where the atleast one content item is modified to fit within its respective slot bymodifying the text within the slot.
 15. A computer program productcomprising a non-transitory computer-readable storage medium storingcomputer executable code, the code when executed by a computer processorperforms a method comprising: receiving, by the client device, a pagetemplate including a plurality of slots, each slot defining a portion ofthe display of the client device within which a content item isdisplayed; displaying a content item in each of the slots of the pagetemplate on the display of the client device while the client device isin a first orientation; sensing by a rotation sensor included in theclient device, a rotation of the client device to a second orientation,the rotation with respect to a reference orientation; and responsive tothe rotation sensor sensing the rotation of the client device: rotatingthe template and the plurality of slots with respect to the referenceorientation to match the rotation of the client device so positions ofthe slots relative to each other in the second orientation based on thereference point of the display of the client device match positions ofthe slots relative to each other in the first orientation based on areference point of the display of the client device, rotating thecontent items within each of the slots with respect to the display ofthe client device to maintain a constant orientation of the contentitems relative to the reference orientation, and modifying a layout ofthe content item presented in the respective slot to fit the contentitem within its respective slot.
 16. The computer program product ofclaim 15, wherein the first orientation is a portrait orientation andthe second orientation is a landscape orientation.
 17. The computerprogram product of claim 15, wherein the rotation of the client deviceis a 90 degree counter-clockwise rotation, and the rotation of thecontent items within each of the slots is a 90 degree clockwiserotation.
 18. The computer program product of claim 15, wherein themethod performed by the computer processor when the code is executedfurther comprises: responsive to the rotation sensor sensing a rotationof the client device from the second orientation to a third orientation:rotating the template and the plurality of slots with respect to thereference orientation to match the rotation of the client device sopositions of the slots relative to each other in the third orientationbased on the reference point of the display of the client device matchpositions of the slots relative to each other in the first orientationbased on the reference point of the display of the client device,rotating the content items within each of the slots with respect to thedisplay of the client device to maintain a constant orientation of thecontent items relative to the reference orientation, and modifying alayout of at least one content item presented in the respective slot tofit the at least one content item within its respective slot.
 19. Acomputer program product comprising a non-transitory computer-readablestorage medium storing computer executable code, the code when executedby a computer processor performs a method comprising: receiving a pagetemplate including a plurality of slots, each slot defining a portion ofa display of a client device within which a content item is displayed;receiving a plurality of content items for display in the page template;assigning each of the content items to a slot of the page layout;generating a first layout of the content items, the layout comprisingeach of the content items contained in the slot of the page template towhich the content item is assigned; displaying the first layout on thedisplay of the client device; sensing by a rotation sensor in the clientdevice a rotation of the display of the client device from a firstorientation to a second orientation; responsive to the rotation sensorsensing the rotation of the display of the client device, generating asecond layout of the content items where positions of the slots of thepage template relative to each other in the second layout matchpositions of the slots relative to each other in the first layout basedon a reference point of the display of the client device, where contentitems assigned in each slot are rotated within the slot with respect tothe page template in a direction opposite to the detected rotation ofthe device to maintain a constant orientation of the content items inthe first orientation and in the second orientation, and where the oneor more of the content items are modified to fit within their respectiveslots based on the rotation of the slots that contain the one or morecontent items and displaying the second layout on the display of theclient device while the rotation sensor indicates that the display ofthe client device is in the second orientation.
 20. The computer programproduct of claim 19, wherein at least one or more of the content itemscomprises an image, and where the at least one content item is modifiedto fit within its respective slot by repositioning the image within therespective slot.
 21. The computer program product of claim 19, whereinat least one or more of the content items comprises text, and where theat least one content item is modified to fit within its respective slotby modifying the text within the slot.